// 渲染器的预加载脚本
/**
 * 向渲染器加入需要特殊权限的功能 API:contextBridge
 */

const { contextBridge, ipcRenderer } = require('electron')
const path = require('path')
const fs = require('fs')
const { merge_v, merge_a, merge_v_a, merge_a_a, merge_v_a_a,} = require('./ffmpeg')
const { Buffer } = require('buffer')

contextBridge.exposeInMainWorld('operateTitle', {
    // 暴露最小化窗口的方法
    controlWin: (data) => ipcRenderer.send('controlMainwin', data),
})

contextBridge.exposeInMainWorld('openView', {
    // 暴露打开预览窗口的方法
    openPreview: (data) => ipcRenderer.send('open-preview', data),
    // 暴露设置窗口的方法
    openSetview: () => ipcRenderer.send('open-setview'),
    // 暴露打开水印窗口的方法
    openTitleView: () => ipcRenderer.send('open-titleview'),
    // 暴露打开热键窗口的方法
    openHotkeyView: () => ipcRenderer.send('open-hotkeyview'),
    // 暴露打开摄像头窗口的方法
    openCameraView: () => ipcRenderer.send('open-cameraview'),
    // 暴露打开设置窗口的方法
    openSetView: () => ipcRenderer.send('open-setview')
})

contextBridge.exposeInMainWorld('closeView', {
    // 暴露关闭水印窗口的方法
    closeTitleView: () => ipcRenderer.send('close-titleview'),
    // 暴露关闭热键窗口的方法
    closeHotkeyView: () => ipcRenderer.send('close-hotkeyview'),
    // 暴露关闭摄像头窗口的方法
    closeCameraView: () => ipcRenderer.send('close-cameraview')
})

contextBridge.exposeInMainWorld('titleView', {
    // 修改水印信息
    updataTitle: (data) => ipcRenderer.send('update-title', data)
})

contextBridge.exposeInMainWorld('alertAPI', {
    alert: (data) => ipcRenderer.send('show-alert', data)  
})

// 处理音视频
contextBridge.exposeInMainWorld('ffmpegAPI', {
    // 保存源数据，统计有哪些源数据
    saveTempBlob: (data, mark) => {
        data.arrayBuffer().then( arrayBuffer => {
            ipcRenderer.send('save-temp-blob', Buffer.from(arrayBuffer), mark)
        })
    },
    saveFile: async (callback) => {
        await ipcRenderer.invoke('save-file')
        callback()
    }
})

contextBridge.exposeInMainWorld('testAPI', {
    test: () => {
        merge_v_a_a(path.resolve(tempPath, TEMP_FILENAME['SV']), path.resolve(tempPath, TEMP_FILENAME['SA']), path.resolve(tempPath, TEMP_FILENAME['MA']), path.resolve(tempPath, 'video2.mp4'))
    }
})


// 获取账号信息
// const acinf = fs.readFileSync(path.resolve(__dirname, './assets/A-Pinfor.json'), 'utf-8')
// contextBridge.exposeInMAinWorld('resources', {
//     accountinf: acinf
// })
